#coding=utf-8
import xlrd
from xlutils.copy import copy
import time
from config.file_config import FilePath
from Z_other.other.get_data import GetData
from Z_other.other.dependent_data import DependdentData


class ExcelUtil:
    def __init__(self,excel_path=None,index=None):
        self.file_path = FilePath()
        self.data = GetData()
        if excel_path == None:
            self.excel_path = self.file_path.excel()
        else:
            self.excel_path = excel_path
        if index == None:
            index = self.file_path.sheet()
        self.file = xlrd.open_workbook(self.excel_path)
        self.table = self.file.sheets()[index]
        #[[],[]]

    # 获取excel数据，按照每行一个list，添加到一个大的list里面
    def get_data(self):
        result = []
        rows = self.get_lines()
        if rows !=None:
            for i in range(1,rows):
                is_run = self.data.get_is_run(i)
                request_data = ''
                if is_run:
                    depend_case = self.data.is_depend(i)
                    request_data = self.data.get_request_data(i)
                    if depend_case != None:
                        print('依赖case')
                        request_data = DependdentData(depend_case).get_de_data(i, request_data)
                    col = self.table.row_values(i)
                    result.append(col)
                else:
                    pass
            return result
        else:
            return None

    def before_run(self):
        is_run = ''
        depend = ''
        header = ''
        cookie_token = ''
        """先经过以上判断，再把数据放进ddt！"""

        """
        当该case需要前置依赖时，运行前置case，并获得前置case中的返回值，
        然后获取返回值中需要的值，把该值更新到后置case中的data里，然后返回后置case（pos）的data
            1.获取前置case（pre_case）相关数据
            2.使用1的数据，运行pre_case
            3.提取pre_case返回值>>>pre_res
            4.通过pos_case中的key，提取pre-case返回值中的某个值>>>pre_res_value
            5.通过pos_case中的key_2，把pre_res_value更新到pos_case中的data里，
                并返回data>>>pos_data
            6.使用pos_data发起请求
        """

    #获取excel行数
    def get_lines(self):
        #行数
        rows = self.table.nrows
        if rows>=1:
            return rows
        return None

    #获取单元格的数据
    def get_col_value(self,row,col):
        #print 
        if self.get_lines()>row:
            data = self.table.cell(row,col).value
            return data
        return None


    #写入数据
    def write_value(self,row,value):
        read_value = xlrd.open_workbook(self.excel_path)
        write_data = copy(read_value)
        write_data.get_sheet(0).write(row,9,value)
        write_data.save(self.excel_path)
        time.sleep(1)

if __name__ == '__main__':
    ex = ExcelUtil()
    a01 = ex.get_data()
    # print(a01)
    print(len(a01))# len = 5
    print(a01[0][0]);print(a01[1][0]);print(a01[2][0])
